Repository navigation
refactor(spec)!: retire the uncalled describeManagedApiMethodConflicts export - #33583
Conversation
…s export The spec helper had no caller left: the lint rule and the registry strip each build their own message from checkManagedApiMethodAffordances. Remove the function and its test block; the predicate, its conflict type and the verb table stay. Claude-Session: https://claude.ai/code/session_01FEkQ5mqr24gy2eNyrmiqJd Co-Authored-By: Claude <noreply@anthropic.com>
gen:api-surface and gen:export-origins drop the retired function; the changeset declares the narrowing and its ADR-0087 disposition. Claude-Session: https://claude.ai/code/session_01FEkQ5mqr24gy2eNyrmiqJd Co-Authored-By: Claude <noreply@anthropic.com>
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them. What this run could not see
Coarse fallback — 172 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 9a6fcdd25b080fdac8c640e5f03d04cbc8ade831 && git checkout 9a6fcdd25b080fdac8c640e5f03d04cbc8ade831
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 4bba8b8f02fdbdf30e9ad41fc5d2a6fdd3ccaf2a 12a6f2e15dd70fc9a938eeb0dbb23214ad043b6c && git checkout -B drift-repro 4bba8b8f02fdbdf30e9ad41fc5d2a6fdd3ccaf2a && git merge --no-ff 12a6f2e15dd70fc9a938eeb0dbb23214ad043b6c
node scripts/docs-audit/affected-docs.mjs --json 4bba8b8f02fdbdf30e9ad41fc5d2a6fdd3ccaf2a |
|
domain:spec#4 · os-project-manager · session_01FEkQ5mecqk8M5q9vjKj6aS Contract reviewServed-tier: Inputs read: card #33522 body and all three comments (triage 6886170312, claim 6886195399, dev report 6887762168), PR #33583 body and file list (5 files), the net diff ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Findings: N1 (nit, ②, accepted deviation). No must-fix, no should-fix; nits alone end the round. Implemented-by: VERDICT: PASS |
|
domain:spec#4 · os-project-manager · session_01FEkQ5mecqk8M5q9vjKj6aS ACCEPT · PR #33583 (#33522) · head
|
Requested by Leehom · project thread
Fixes #33522
Clause-②: no (narrowing)
Metadata-protocol: none
Skills-docs: none — no skill, doc or example names
describeManagedApiMethodConflicts(git grepoverskills/,content/docs/,docs/,examples/andui/ate3f0cfd4: 0 hits); nothing an author writes changes.Route: Retire, per the seat's claim 6886195399 (Ruling-ref 「开放 p3卡认领」). Card source: #32134 / PR #33517 (untouched here; it edits lint and objectql files this PR does not).
维护者速读
@objectstack/spec/data删掉导出函数describeManagedApiMethodConflicts及其测试块,并重新生成两份导出快照(api-surface、export-origins各少一行)。判定函数checkManagedApiMethodAffordances、类型ManagedApiMethodConflict、动词表MANAGED_WRITE_VERB_AFFORDANCE都不动。object/managed-api-method-unaffordable和 objectql 注册时的剥离都自己拼消息。它的句子还对所有managedBy桶都建议“打开 userActions”,在synced对象上是错的(解析会拒绝打开写的userActions)。已发布却零消费的能力,创业阶段直接退役,不设过渡期。@objectstack/spec/data导入这个函数的 TypeScript 代码会编译报错(TS2305)。本仓(含ui/、examples/)、hotcrm、gallery 和组织代码搜索都没有调用方;cloud 仓读不到,若有导入会在升级时编译期响亮报错,不会静默出错。运行时行为不变。回滚即 revert。packages/spec/src/data/managed-api-affordance.ts(删掉的函数,文件头里“两个消费方”说的是判定函数,仍然成立)、.changeset/33522-retire-describe-managed-api-method-conflicts.md(BREAKING 说明与 ADR-0087 处置)。git grep -n describeManagedApiMethodConflicts -- . ':!*CHANGELOG.md' ':!.changeset',预期零命中。What changes
packages/spec/src/data/managed-api-affordance.ts:describeManagedApiMethodConflictsand its docblock are removed. The file header's "exactly two consumers" describescheckManagedApiMethodAffordances(objectql'sreconcileManagedApiMethodsand lint'svalidateManagedApiMethodsboth call it), so it stays true and is unchanged. Nothing else in the file named the removed function.packages/spec/src/data/managed-api-affordance.test.ts: thedescribe('describeManagedApiMethodConflicts')block (4 cases) and its import are removed; every other case is kept.packages/spec/api-surface/data.json,packages/spec/export-origins/data.json: regenerated withgen:api-surfaceandgen:export-originsagainst a real spec build (.d.tsemitted, noOS_SKIP_DTS); each loses exactly the one line for the function..changeset/33522-retire-describe-managed-api-method-conflicts.md:@objectstack/specpatch, both declaration lines, a**BREAKING**banner, the caller's one-line fix and the ADR-0087 disposition (below).Changeset level and ADR-0087 disposition (the rule applied)
AGENTS.md Post-Task Checklist step 3: "a non-protocol change, widening or breaking, ships
patchand keeps its BREAKING banner and ADR-0087 disposition".Metadata-protocol: none(no authorable key, value or type moves), sopatch, with the banner and one marker.The marker is
not-required (no-migration-prescription). Measured, not assumed:runtime-export-retired @objectstack/spec#describeManagedApiMethodConflicts(with a FROM/TO line) is refused onmain's gate at predicate 1,retired-from-entry: "describeManagedApiMethodConflictsis not exported by packages/spec/src/index.ts at the merge base". The function is reachable only from the./datasubpath, and the gate onmainreads a package's root entry only (its header: "a retirement from a subpath names no operand this category can verify").27e5e2e8, "runtime-export-retired reads literal subpath keys", open), the subpath operand@objectstack/spec/data#describeManagedApiMethodConflictsverifies: "verified: @objectstack/spec/data#describeManagedApiMethodConflicts (export, packages/spec/src/data/managed-api-affordance.ts)".maintoday the one admissible disposition isno-migration-prescription, and the changeset carries no FROM/TO block (that category refuses one); the caller's fix is given in a sentence. Both probes ran on a throwaway commit, restored and verified (blob hash and HEAD equal,git diff HEADempty).Tests
Head
12a6f2e1(this branch merged withorigin/main8e63ed87, which movedpackages/spec; spec rebuilt with real.d.tsafter the merge).pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2(under the verify lock): exit 0,Test Files 931 passed (931),Tests 28421 passed | 1 todo (28422).managed-api-affordance.test.tskeeps everycheckManagedApiMethodAffordancesand verb-table case; only the 4 cases of the removed function's block are gone.pnpm --filter @objectstack/spec typecheck: exit 0.check:test-typecheck: OK (52 files / 240 errors / 131 pinned signatures held; the removed block named no ledger signature).pnpm --filter @objectstack/spec check:generatedafter the merge: exit 0 (every artifact current,api-surface/andexport-origins/included).git grep -n describeManagedApiMethodConflicts -- . ':!*CHANGELOG.md' ':!.changeset': no hit (exit 1). Builtpackages/spec/dist/data/index.d.mts: 0 occurrences.(narrowing)arm): runs on this head after the gate loop; its VERDICT line and counts are in theos-dev-reportcomment on the card.Acceptance notes
packages/lint/CHANGELOG.md(two released entries) still names "the spec'sdescribeManagedApiMethodConflictssentence" as what the lint rule stopped appending. That is release-owned history and true of its release; not edited.not-required (runtime-export-retired @objectstack/spec/data#describeManagedApiMethodConflicts)with a matching FROM/TO line (measured green under that gate, above).Verification
Local subset, head
12a6f2e1: the 82 commandsnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives for this diff, each run with its exit code captured before any pipe: 82 exit 0. Reconciliation: "Run reconciliation — 82 derived, 82 run, 0 NOT-MEASURED, 0 UNRUN." Alsonode scripts/check-platform-checklist.mjs --changed-from origin/main: exit 0 (no anchored file in the change set). Full log:pm-orders/spec/33522-gates-ran.txtin the project files.ADR-0087 gate on the committed changeset
pnpm check:adr-0087-registration: exit 0, "1 declared-breaking changeset(s), each carrying an ADR-0087 disposition",[BREAKING+bang+clause-②-narrowing] not-required (no-migration-prescription).The first pass at
5516b681(before the merge) was 81 exit 0 andcheck:dual-build-cjs-loadsexit 3 (prerequisite not met: packages withoutdist/); on the merged head, after the wider build, it answers exit 0. CI runs every family on the PR; its check-runs are the record.Generated by Claude Code